{ }:

let
  codes = {
    "%09" = "\t";
    "%0A" = "\n";
    "%0D" = "\r";
    "%20" = " ";
    "%21" = "!";
    "%22" = "\"";
    "%23" = "#";
    "%24" = "$";
    "%25" = "%";
    "%26" = "&";
    "%27" = "'";
    "%28" = "(";
    "%29" = ")";
    "%2A" = "*";
    "%2B" = "+";
    "%2C" = ",";
    "%2F" = "/";
    "%3A" = ":";
    "%3B" = ";";
    "%3C" = "<";
    "%3D" = "=";
    "%3E" = ">";
    "%3F" = "?";
    "%40" = "@";
    "%5B" = "[";
    "%5C" = "\\";
    "%5D" = "]";
    "%5E" = "^";
    "%60" = "`";
    "%7B" = "{";
    "%7C" = "|";
    "%7D" = "}";
  };
in
builtins.replaceStrings (builtins.attrNames codes) (builtins.attrValues codes)
